Code Example (Week 3)
data Stack a
= EmptyStack
| MkStack a (Stack a)
deriving (Show, Eq)
data Tree a
= Leaf
| Node a (Tree a) (Tree a)
deriving (Show, Eq)
depth :: Tree a -> Int
depth Leaf = 0
depth (Node _ t1 t2)
= 1 + max (depth t1) (depth t2)
data RoseTree a
= RLeaf
| RNode a [RoseTree a]
deriving (Show, Eq)
data Point = MkPoint Float Float deriving (Show, Eq)
data Shape
= Rect Point Float Float
| Circ Point Float
deriving (Show, Eq)
distPoint :: Point -> Point -> Float
distPoint (MkPoint x y) _
= error "nyi"
name :: Shape -> String
name (Rect _ _ _) = "rectangle"
name (Circ _ _) = "circle"